<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="/js/jq/jquery.js"></script>
</head>
<body>
    <input type="text" id="username">
    <input type="button" value="ajax" onclick="sendAjax()">
    <input type="button" value="ajax" onclick="sendAjax2()">
    <script>
       /*  
       options的其它配置属性
            url:通过配置项的方式,完成请求地址的配置;作用和$.ajax(url,options)的url参数功能一致,当两个地址同时定义时$.ajax方法url参数优先级更高
            async:请求同步模式或异步模式设置; 默认值true 异步模式 ;
            timeout:设置请求超时时长(number - ms) ;
            statusCode:HTTP响应状态的详细定义 object:{ httpCode:function  } 
            beforeSend:请求发送前的处理函数 readyState=0 function(jqXHR,setting){} , 方法返回false会中断请求发送
            complete:请求完成后执行函数-不论错误还是成功   function(jqXHR,textStatus){} 
            dataFilter:响应数据拦截器方法，用于预处理数据  function(data,dataType){}  */


        function sendAjax(){
            let username=$("#username").val();
            $.ajax({
                url:"/jquery/test",
                method:"get",
                beforeSend:function(jqXHR,options){
                    // console.log("----");
                    // console.log(jqXHR,options);
                    return username!="";//true允许发送,false阻止发送
                },
                data:{
                    username:username
                },
                statusCode:{
                    200:function(){
                        console.log("请求成功");
                    },
                    404:function(){
                        console.log("资源不存在");
                    },
                    500:function(){
                        console.log("服务器运行异常");
                    }
                },
                complete:function(jqXHR,textStatus){
                    console.log("请求完成后执行的函数");
                }

            });
        }

        function sendAjax2(){
            $.ajax({
                url:"/jquery/test3",
                async:true,//异步模式
                // dataType:"json",
                dataType:"text",//从服务器返回的预期的数据类型
                dataFilter:function(data,dataType){//在请求响应数据后，在success方法执行前对success的data数据(ajax响应结果)进行提前处理，需要返回值
                    // console.log(data,dataType);
                    let obj=JSON.parse(data);
                    return obj;//dataFilter预先处理数据，必须有返回值
                },
                success:function(data){
                    // console.log(JSON.parse(data));
                    console.log(data);
                }
            });
        }
    </script>
</body>
</html>